home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / fb386 / c_runner / mcx02d.bas < prev    next >
BASIC Source File  |  1993-11-30  |  10KB  |  161 lines

  1. 100 '「CLUB RUNNER II」 Vertion 2.01 Rel.2 Copyright By AMEX/AD-X(C) 1993
  2. 110 CLS:SCREEN@ 0:DEFINT A-L,N-Z:DEF FNR(N)=INT(RND(1)*N)
  3. 120 DIM A(15),D(255),S(1),GX(1),GY(1),R(15),G(15),B(15),H$(1),G$(1),P(5000),S#(8),N$(8),R$(8),D$(28),CS(8),RC(8),V(99),MD(10),MH(8),W(15),E(10799),F$(1):DX=8:MX=1:MY=1:LOAD@ "A:MHX03.TIF",(640,0):GET@A (640,0)-(767,319),E
  4. 130 OPEN "I",#1,"A:MRX01.RPL":FOR I=0 TO 5000:INPUT #1,P(I):NEXT:INPUT #1,R$:INPUT #1,SR:CLOSE #1
  5. 140 OPEN "I",#1,"A:MLX03.DAT":FOR I=0 TO 15:INPUT #1,W(I):NEXT:CLOSE #1
  6. 150 F$(0)="0":F$(1)="":OPEN "I",#2,"A:MLX02.DAT":FOR I=0 TO 8:INPUT #2,S#(I):INPUT #2,N$(I):INPUT #2,R$(I):NEXT:CLOSE #2
  7. 160 FOR I=0 TO 25:D$(I)=CHR$(65+I):NEXT:D$(26)="[":D$(27)="\":D$(28)="]"
  8. 170 X$="00000005A075AE57EA2244FC3FF81F1E78D99BDE7B399CF66F01800000000000"
  9. 180 Y$="00F00FFFFFFFFFFFFFFFFF7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF8001000000"
  10. 190 DATA 0,0,0,165,165,165,83,36,36,6,0,192,0,127,0,0,127,127,248,247,0,163,1,2,217,0,0,0,0,255,255,183,255,245,205,163,253,216,180,255,248,248,255,255,0,255,255,255
  11. 200 FOR I=0 TO 15:READ R(I),G(I),B(I):PALETTE I,[G(I),R(I),B(I)]:NEXT
  12. 210 OPEN "I",#2,"A:MLX01.DAT":FOR I=1 TO 7:INPUT #2,MH(I):NEXT:CLOSE #2
  13. 220 FOR I=0 TO 31:X1$=X1$+CHR$(VAL("&H"+MID$(X$,I*2+1,2)))
  14. 230 Y1$=Y1$+CHR$(VAL("&H"+MID$(Y$,I*2+1,2))):NEXT
  15. 240 MOUSE 0:MOUSE 2,Y1$,X1$:TB=W(5)*16+W(6)*8+W(7)*4+W(8)*2+W(9)+20:G$(0)="MGX35":G$(1)="MGX35"
  16. 250 K=1:SYMBOL (0,460),"STAGE",2,1,%15,,,1
  17. 260 RT=30+(W(1)*2+W(2))*5:LOAD@ "A:mgx27.tif":LOAD@ "A:MGX28.TIF",(532,400):LOAD@ "A:MGX20.TIF",(0,480):V=128:LOAD@ "A:MGX37.TIF",(280,400):GOSUB *TITLE
  18. 270 GOSUB *INPUT:X=SX+15:Y=SY+15:OX=X:OY=Y:GOSUB *SETUP:GOSUB *SIGNAL:TIME$="00:00:00":J=0 
  19. 280 MOUSE 3,0,V:MOUSE 3,1,128:X=MOUSE(0):Y=MOUSE(1):GET@ (X,Y+2)-(X+15,Y+13),A,%2,%3,%4,%5,%6,%7,%8,%9,%10,%11,%12,%13,%14,%15:FOR I=0 TO 15:M#=M#+A(I):NEXT:IF M#=0 THEN OX=X:OY=Y:M#=0 ELSE TB=TB-1:M#=0:GOSUB *MISS
  20. 290 N=0:FOR I=0 TO 1:IF ABS(GX(I)-X)<16 AND ABS(GY(I)-Y)<16 THEN N=I+1:NEXT ELSE NEXT 
  21. 300 PALETTE 5,[0,0,U]:U=U+DX:IF U>255 OR U<0 THEN U=U-DX:DX=DX*-1
  22. 310 P(J)=X:P(J+1)=Y:P(J+2)=9999:J=J+2:IF J>4990 THEN J=0
  23. 320 IF N<>0 THEN TT=RT-TIME:Z=N-1:GOTO *GOAL
  24. 330 S(0)=(RT-TIME)\10:S(1)=(RT-TIME) MOD 10:FOR I=0 TO 1:GET@A (S(I)*16,480)-(S(I)*16+15,511),D:PUT@A (I*16+300,0)-(I*16+315,31),D,PSET:NEXT
  25. 340 IF (RT-TIME)>0 THEN GOTO 280 ELSE GOTO *TIMEUP
  26. 350 *INPUT 
  27. 360 PG=0:D$=G$(Z):OPEN "I",#1,"A:"+D$+".MDA"
  28. 370 INPUT #1,SX,SY,GX(0),GY(0),GX(1),GY(1),YH,YL,H$(0),H$(1),G$(0),G$(1)
  29. 380 GOSUB *PAL0:LINE (0,48)-(639,399),PSET,1,BF:LOAD@ "a:"+D$+".TIF",(0,YH):GOSUB *PAL1:IF G$(0)="END" THEN PG=1
  30. 390 CLOSE #1:R$=D$:SR=YH:D$="":RETURN
  31. 400 *SETUP
  32. 410 MOUSE 0:MOUSE 2,Y1$,X1$:MOUSE 1,SX+15,SY+15,1
  33. 420 *DECTB
  34. 430 IF TB>=0 THEN S(0)=TB\10:S(1)=TB MOD 10:FOR I=0 TO 1:GET@A (S(I)*16,480)-(S(I)*16+15,511),D:PUT@A (I*16+580,440)-(I*16+595,471),D,PSET:NEXT ELSE TB=0:
  35. 440 RETURN
  36. 450 *GOAL
  37. 460 GOSUB *CDOFF:GOSUB *HAP:OY=RT-TIME:A=TT:B=TB:S$=RIGHT$(STR$(S#),7):K=K+1:MX=1:MY=1:IF W(0)=0 THEN IF MH(K-1)>MD(K-1) THEN MH(K-1)=MD(K-1) 
  38. 470 V=128:X$="STAGE"+STR$(K-1)+" COMPLELTE":VX=200:VY=200:GOSUB *TF
  39. 480 X$="TIMER BONUS"+STR$(TB)+"X"+STR$(270*(K+1)):VX=200:VY=248:GOSUB *TF
  40. 490 IF W(0)=0 THEN X$="LAP TIME"+STR$(MD(K-1)):VX=200:VY=296:GOSUB *TF
  41. 500 X=TB:FOR J=X TO 0 STEP -1:TB=J:A=A+1:S#=S#+270*(K+1):GOSUB *DECTB
  42. 510 IF A=100 THEN A=99
  43. 520 S(0)=A\10:S(1)=A MOD 10:FOR I=0 TO 1:GET@A (S(I)*16,480)-(S(I)*16+15,511),D:PUT@A (I*16+300,0)-(I*16+315,31),D,PSET:NEXT
  44. 530 NEXT:GOSUB *SW
  45. 540 TB=W(5)*16+W(6)*8+W(7)*4+W(8)*2+W(9)+20:RT=A:IF PG<>1 THEN GOTO 270
  46. 550 GOTO *END
  47. 560 *MISS
  48. 570 MOUSE 1,OX,OY,1:PLAY "o2@67l8gl32c":GOSUB *DECTB:RETURN
  49. 580 *END
  50. 590 LINE (0,64)-(639,399),PSET,0,BF:LOAD@ "A:END.TIF",(0,80):GOSUB *SW
  51. 600 FOR I=0 TO 10000:NEXT:GOSUB *SORT:GOTO 240
  52. 610 *TITLE 
  53. 620 W(0)=0:J=0:S#=0:GOSUB *PAL0:LOAD@ "A:MGX35.TIF",(0,80):GOSUB *SW:GOSUB *PAL1
  54. 630 IF MOUSE (2,1)<>0 THEN GOSUB *BOOKKEEP
  55. 640 IF MOUSE (2,0)=0 THEN J=J+1:IF J<9000 THEN GOTO 630 ELSE GOSUB *DEMO:GOTO 620
  56. 650 GOSUB *CREDIT:OPEN "I",#1,"A:MGX35.MDA"
  57. 660 INPUT #1,SX,SY,GX(0),GY(0),GX(1),GY(1),YH,YL,H$(0),H$(1),G$(0),G$(1)
  58. 670 CLOSE #1:RETURN
  59. 680 *TIMEUP 
  60. 690 GET@A (0,480)-(15,511),D:PUT@A (316,0)-(331,31),D,PSET
  61. 700 X$="GAME OVER":VX=70:VY=200:MX=3:MY=2:GOSUB *TF
  62. 710 GOSUB *RPL:GOSUB *SORT:GOTO 240
  63. 720 *SW
  64. 730 S$=STR$(S#):X=LEN(S$):S$=RIGHT$("0000000"+RIGHT$(S$,X-1),7):FOR I=1 TO 7:SX=VAL(MID$(S$,I,1)):GET@A (SX*16,480)-(SX*16+15,511),D:PUT@A (80+I*16,0)-(95+I*16,31),D,PSET:NEXT:RETURN
  65. 740 *SIGNAL
  66. 750 GET@A (K*16,480)-(K*16+15,511),D:PUT@A (90,445)-(105,476),D,PSET
  67. 760 IF W(0)=0 THEN LINE (400,16)-(639,47),PSET,0,BF:X1=SX:Y1=SY:X$="RECORD"+STR$(MH(K)):VX=400:VY=16:MX=1:MY=.5!:GOSUB *TF:SX=X1:SY=Y1
  68. 770 GOSUB *CDON:FOR I=0 TO 100:MOUSE 1,SX,SY,1:NEXT
  69. 780 PAINT@ (346,440),%2:PAINT@ (290,440),%8:PLAY "@62O4C4","@62O4C4"
  70. 790 FOR I=0 TO 500:MOUSE 1,SX,SY,1:NEXT
  71. 800 PAINT@ (290,440),%2
  72. 810 PAINT@ (346,440),%4:PLAY "@62O5C1.","@62O5C1." 
  73. 820 RETURN
  74. 830 *TF
  75. 840 SX=LEN(X$):FOR I=1 TO LEN(X$):OX=ASC(MID$(X$,I,1)):IF OX=&H3A OR OX=&H2E THEN OX=26+&H41
  76. 850 IF OX<&H41 THEN OX=OX+7
  77. 860 GET@A ((OX-&H41)*16+160,480)-((OX-&H41)*16+175,511),D:PUT@A (VX+I*(MX*16),VY)-(VX+I*(MX*16)+15,VY+31),D,OR,MX,MY:NEXT
  78. 870 MX=1:MY=1:RETURN
  79. 880 *DEMO
  80. 890 J=0:GOSUB *PAL0:LOAD@ "a:"+R$+".TIF",(0,SR):GOSUB *PAL1
  81. 900 MX=1:MY=1:VX=100:VY=200:X$="PUSH LEFT MOUSE BUTTON":GOSUB *TF
  82. 910 MOUSE 1,P(J),P(J+1),1:IF MOUSE (2,0)<>0 THEN RETURN ELSE J=J+2:FOR I=0 TO 300:NEXT
  83. 920 IF P(J)=9999 THEN GOSUB *RW:RETURN ELSE GOTO 910
  84. 930 *RPL
  85. 940 KILL "A:MRX01.RPL":OPEN "O",#1,"A:MRX01.RPL":FOR I=0 TO 5000:PRINT #1,P(I):NEXT:PRINT #1,R$:PRINT #1,SR:CLOSE #1
  86. 950 RETURN
  87. 960 *SORT
  88. 970 R$(8)=" STAGE"+STR$(K-1):IF K=8 AND W(0)=0 THEN GOSUB *SUMTIME
  89. 980 GOSUB *RP:S#(8)=S#:N$(8)="AAA":FOR I=8 TO 1 STEP -1
  90. 990 IF S#(I)>S#(I-1) THEN SWAP S#(I),S#(I-1):SWAP R$(I),R$(I-1):SWAP N$(I),N$(I-1)
  91. 1000 TIME$="00:00:00":NEXT:J=SEARCH (N$,"AAA"):IF J=8 THEN RETURN
  92. 1010 GOSUB *PAL0:LOAD@ "A:ET4000.TIF",(0,60):GOSUB *PAL1:X=0:M=1:RT=30
  93. 1020 X$=N$(J):VX=80:VY=125:MX=4:MY=2:GOSUB *TF
  94. 1030 YH=0:YL=0:IF MOUSE (2,0)=-1 THEN YH=1 ELSE IF MOUSE (2,1)=-1 THEN YL=1
  95. 1040 IF YH=1 THEN PLAY "V15O6L32BAG":IF MID$(N$(J),M,1)="\" AND M>1 THEN M=M-1 ELSE M=M+1:IF M=4 THEN GOTO 1090
  96. 1050 IF YL=1 THEN LINE (145,125)-(340,190),PSET,%3,BF:PLAY "@4O6L32V15CGEL4D":MID$(N$(J),M,1)=CHR$(ASC(MID$(N$(J),M,1))+1):X=X+1:IF X=29 THEN MID$(N$(J),M,1)="A":X=0
  97. 1060 IF (RT-TIME)<0 THEN GOTO 1090
  98. 1070 S(0)=(RT-TIME)\10:S(1)=(RT-TIME) MOD 10:FOR I=0 TO 1:GET@A (S(I)*16,480)-(S(I)*16+15,511),D:PUT@A (I*16+300,0)-(I*16+315,31),D,PSET:NEXT
  99. 1080 GOTO 1020
  100. 1090 GOSUB *HSS:RETURN 
  101. 1100 *PAL0
  102. 1110 LINE (0,48)-(639,399),PSET,0,BF:FOR I=0 TO 13:PALETTE I,0:NEXT:RETURN
  103. 1120 *PAL1
  104. 1130 FOR I=0 TO 13:PALETTE I,[G(I),R(I),B(I)]:NEXT:RETURN
  105. 1140 *RW
  106. 1150 LINE (0,48)-(639,399),PSET,%9,BF:VX=180:VY=48:X$="BEST CLABRUNNERS":GOSUB *TF:FOR M=0 TO 7:PUT@A (0,80)-(127,399),E,PSET:PUT@A (500,80)-(627,399),E,PSET
  107. 1160 IF N$(M)="SEX" THEN N$(M)="H\\" ELSE IF N$(M)="AAA" THEN N$(M)="NUL"
  108. 1170 S=LEN(STR$(S#(M))):X$=STR$(M+1)+" "+RIGHT$("0000000"+RIGHT$(STR$(S#(M)),S-1),7)+" "+N$(M)+R$(M):MX=1:MY=1:VX=128:VY=M*31+96:GOSUB *TF:NEXT:J=0
  109. 1180 VX=120:VY=380:X$="DO NOT TRASH\RECYCLE IT.":MX=1:MY=.5!:GOSUB *TF
  110. 1190 IF MOUSE (2,0)<>0 THEN RETURN ELSE J=J+1
  111. 1200 IF J>9000 THEN RETURN ELSE GOTO 1190
  112. 1210 *HAP 
  113. 1220 PLAY "T130@99V11O5L8CDECDECDECDEL4GAL2B","T130@84V10O4L8CDECDECDECDEL4GAL2B","T130@99V8O4L32RL8CDECDECDECDEL4GAL2B","T130@63V8O5L32RL8CDECDECDECDEL4GAL2B":RETURN
  114. 1230 *CREDIT
  115. 1240 PLAY "T130O4@96L16CEG>CGE>L2C","T130O5@97L32RL16CEG>CEG>L2C":RETURN
  116. 1250 *CDON
  117. 1260 CDINF CS:IF CS(2)=1 THEN W(0)=1:IF W(0)=1 THEN RETURN
  118. 1270 M=0:CDINF CS:MX=CS(5):FOR I=2 TO MX-1:X$=CDSTIME$(I):Y$=CDSTIME$(I+1):OX=VAL(MID$(X$,1,2))*60+VAL(MID$(X$,4,2)):OY=VAL(MID$(Y$,1,2))*60+VAL(MID$(Y$,4,2)):J=OY-OX:IF J>120 THEN V(M)=I:M=M+1:NEXT ELSE NEXT
  119. 1280 IF M=0 THEN W(0)=1:RETURN
  120. 1290 MX=FNR(M-1):CD PLAY V(MX):RETURN
  121. 1300 *CDOFF
  122. 1310 CDSTAT CS:MD(K)=CS(8)*1.33!
  123. 1320 MD(K)=INT((MD(K)+CS(7)*100))/100:CD STOP:RETURN
  124. 1330 *SUMTIME
  125. 1340 MD(10)=0:FOR I=0 TO 8:MD(10)=MD(10)+MD(I):NEXT
  126. 1350 OX=MD(10)\60:MD(10)=MD(10)-(OX*60):IF MD(10)<10 THEN SX=0 ELSE SX=1
  127. 1360 Y$="":IF (MD(10)*100) MOD 10=0 THEN Y$="0"
  128. 1370 IF (MD(10)*100) MOD 100=0 THEN Y$=".00"
  129. 1380 R$(8)=STR$(OX)+"]"+F$(SX)+RIGHT$(STR$(MD(10)),LEN(STR$(MD(10)))-1)+Y$:RETURN
  130. 1390 *RP
  131. 1400 IF W(3)=1 THEN RETURN
  132. 1410 KILL "A:MLX01.DAT":OPEN "O",#2,"A:MLX01.DAT":FOR I=1 TO 7:PRINT #2,MH(I):NEXT:CLOSE #2
  133. 1420 RETURN
  134. 1430 *HSS
  135. 1440 IF W(3)=1 THEN RETURN
  136. 1450 KILL "A:MLX02.DAT":OPEN "O",#2,"A:MLX02.DAT":FOR I=0 TO 8:PRINT #2,S#(I):PRINT #2,CHR$(34)+N$(I)+CHR$(34):PRINT #2,CHR$(34)+R$(I)+CHR$(34):NEXT:CLOSE #2:RETURN
  137. 1460 *BOOKKEEP
  138. 1470 FOR I=0 TO 15:PALETTE I,[G(I)\2,R(I)\2,B(I)\2]:NEXT
  139. 1480 COLOR 7:LOCATE 25,2:PRINT "BOOK KEEPING":SX=0
  140. 1490 LOCATE 20,5:PRINT "PLAY LEVEL:":SY=W(1)*2+W(2):LOCATE 40,5:PRINT MID$("V-HARDHARD  NORMALEASY  ",SY*6+1,6)
  141. 1500 LOCATE 20,7:PRINT "SCORE BACKUP: ":LOCATE 40,7:PRINT MID$("ON OFF",W(3)*3+1,3)
  142. 1510 LOCATE 20,9:PRINT "DATA CLEAR:":LOCATE 40,9:PRINT MID$("HOLD CLEAR",W(4)*5+1,5)
  143. 1520 LOCATE 20,11:PRINT "CD PLAY:":LOCATE 40,11:PRINT MID$("ACTIVEASLEEP",W(0)*6+1,6)
  144. 1530 LOCATE 25,18:PRINT "QUIT:OPERATION BY BIT #14"
  145. 1540 LOCATE 25,17:PRINT "SAVE:CLICK BIT #15 (START AGAIN)"
  146. 1550 LOCATE 20,13:PRINT "TIMER BONUS:":LOCATE 40,13:PRINT USING "##SEC.";W(5)*16+W(6)*8+W(7)*4+W(8)*2+W(9)+20
  147. 1560 FOR I=0 TO 15:LOCATE 10+I*3,19:PRINT W(I);:NEXT:PRINT " "
  148. 1570 LOCATE SX*3+11,19:PRINT "*"
  149. 1580 IF MOUSE (2,0)=-1 THEN SX=SX+1:IF SX=16 THEN SX=0
  150. 1590 IF MOUSE (2,1)=-1 THEN W(SX)=W(SX) XOR 1:IF SX=15 THEN KILL "A:MLX03.DAT":OPEN "O",#1,"A:MLX03.DAT":FOR I=0 TO 15:PRINT #1,W(I):NEXT:CLOSE #1:RUN
  151. 1600 IF MOUSE (2,1)=-1 THEN IF SX=14 THEN FOR I=0 TO 15:PALETTE I,[G(I),R(I),B(I)]:NEXT:CLS 4:IF W(4)=1 THEN GOSUB *CCCR:RETURN ELSE RETURN
  152. 1610 GOTO 1490
  153. 1620 *CCCR
  154. 1630 FOR I=1 TO 7:MH(I)=99.99!:NEXT:GOSUB *RP
  155. 1640 FOR I=0 TO 8:N$(I)=MID$("ADXA.DRRTLYNGIJARTEYERYOEYE",I*3+1,3)
  156. 1650 R$(I)=" .......":S#(I)=200000-I*25000:NEXT
  157. 1660 GOSUB *HSS:RETURN
  158. 1670 'Winners Don't use DRAGS.  A.D 1990
  159. 1680 'Don't TRASH! Recycle it.  AMEX/AD-X 1992
  160. 1690 'COMPLETE Vertion 2.01  Rel.2
  161.